规划器容量/前瞻段数/强制结束交融介绍文档

修订日期 修订版本 修订内容 修订人
2024.06.19 V0.1 初始化文档 赵锦强

[TOC]

1 规划器队列介绍

  • 轨迹队列: 插入的路径经速度规划压入轨迹队列,通过tpUpdateCycle接口获取轨迹点
  • 路径缓冲队列: 路径交融时插入的路径临时放在该队列,结束交融或者插入路径段数大于该队列容量时,将队列中的路径作为一个整体进行速度规划,路径之间不停顿,将规划结果放在轨迹队列

2 规划器容量/前瞻段数

enum PlannerCapacity
{
    LookAhead = 0,                  // 最大的前瞻段数
    ExecutionTrajectory    = 1,     // 轨迹执行队列中最多的轨迹点数
};// 规划器容量类型

//!设置规划器的容量信息
ARAL_API_COMMON(1.0) int tpSetPlannerCapacity(const PlannerCapacity& type, const unsigned int& size) = 0;
  • 最大的前瞻段数
    • LookAhead: 设置的是路径缓冲队列的容量,定义为最大前瞻段数,如果插入的路径交融,会临时存放到路径缓冲队列,如果插入的路径段数大于该容量则进行速度规划计算,计算结果压入轨迹队列
    • 值设置经验: 在计算时间和运动效率之间平衡,如果插入的路径都很短(毫米极),设置前瞻段数为3,则受限于路径长度,容易出现无法提速的问题,此时应将前瞻段数成倍的增大。正常情况下设置为3即可,机械臂不会等待过长的计算时间,可实现边运动边路径插入,即动态交融。如果希望关闭动态交融,则将最大前瞻段数设置为1e6甚至更大,即避免触发插入的路径段数大于路径缓冲队列容量
  • 最大的轨迹点数
    • ExecutionTrajectory: 设置的是轨迹队列的容量,以轨迹点数计量。轨迹点数 = 轨迹队列运动时长 / 采样周期。
    • 设置目的: 避免不必要的计算浪费,因为规划器支持停止、暂停/恢复、动态调速速度比例和缩减模式,当使用上述功能时轨迹队列中未执行的轨迹将重新速度规划,以实现实时控制机械臂运动速度的目的。如果轨迹点容量过大,则会引起大量轨迹重复计算,造成计算浪费。
    • 如何起作用: 用户设置轨迹点容量后,后续插入路径过程中如果实际轨迹点数大于容量值,则拒绝路径插入,打印警告日志
    • 值设置: 建议值200,采样周期为5ms时,轨迹队列可执行时间为1s。可根据实际情况上下调整

3 强制结束交融

在动态交融过程中,强制结束交融是轨迹队列避免数据饥饿的一种保护策略,即如果轨迹队列剩余轨迹点数小于阈值4时判定将产生数据饥饿,将强制结束交融,将路径缓冲队列中剩余路径进行速度规划压入轨迹队列。

可能存在问题,动态交融过程中经常触发强制结束交融,导致停顿。解决办法: 增大轨迹队列容量,建议是数据饥饿阈值的十倍以上,即40以上

results matching ""

    No results matching ""